package spring.bean.annotations;

import spring.bean.SpringBeanRegistryAfterOperParse;

import java.lang.annotation.*;

/**
 * 平台增强注解 只在 {@link SpringBeanRegistryAfterOperParse#SCAN_PACKAGES } 指定的包下有效
 * 用途: 在 spring 注册完 bean 但尚未进行初始化时 移除该注解中指定的已注册好的bean 并重新注册当前类为指定的bean
 */
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface BeanRegistryAfterOper {

    /**
     * 要替换或删除的 bean 名称 可以是多个
     */
    String[] value() default {};

    /**
     * 是否使用 value 中的第一个名称 将当前类注册为一个 bean
     */
    boolean registerBean() default true;
}
